/* Zatok - язык программирования текстовых игр
 * (С) 2010 - 2012 Меркулов Матвей Юрьевич
 * Код лицензирован под лицензией GNU LGPL
 * Вы можете прочитать текст лицензии по адресу:
 * http://www.gnu.org/copyleft/lesser.html
 * или прочитать русский перевод по адресу:
 * http://ru.wikisource.org/wiki/GNU_Lesser_General_Public_License
 */

package base;

import base.intrface.CChoice;
import base.intrface.CMenu;
import java.io.File;
import java.io.FileFilter;
import java.util.LinkedList;
import parser.CParser;
import parser.CReader;

public class CBase {
	public static void Run() {
		CParser.Init();
		CParser.InitObjects();

		FileFilter Filter = new FileFilter() {
			public boolean accept( File file ) {
				return file.getName().endsWith( ".zat" ) && !file.isDirectory();
			}
		};

		CMenu Menu = new CMenu();
		for( String ChildDir : ( new File( "programs" ) ).list() ) {
			String ChildDirName = "programs/" + ChildDir;
			for( File File : ( new File( ChildDirName ) ).listFiles() ) {
				if( File.getName().startsWith(  "main" ) ) AddFile( Menu, ChildDirName + "/" + File.getName() );
			}
		}

		Menu.Centerize();
		CGraphics.Menus.add( Menu );
		CProject.ShowGameMenu();
	}



	public static boolean InLimits( int Value, int From, int To ) {
		if ( Value >= From && Value <= To ) return true;
		return false;
	}



	private static void AddFile( CMenu Menu, String Filename ) {
		CParser.CurrentReader  = new CReader( Filename );
		LinkedList<String> Tokens = CParser.ToTokenList( CParser.CurrentReader.ReadLine(), true );
		CParser.CurrentReader.Close();
		if ( Tokens.isEmpty() ) return;
		if ( !Tokens.getFirst().equals( "названиепроекта" ) ) return;
		if ( Tokens.size() != 2 ) CParser.Error();
		CChoice Choice = new CChoice();
		Choice.Name = CParser.ExtractString( Tokens.getLast() );
		Choice.CommandText = Filename;
		Menu.AddItem( Choice, 0 );
	}

	
	
	public static String GetFilename( String Dir, String Filename ) {
		if( Filename.startsWith(  "/" ) ) return Filename.substring( 1 );
		return Dir + Filename;
	}
}